package naves;

import java.awt.Point;

import javax.swing.ImageIcon;

import logica.SkyNet;
import balas.Bala;
import balas.BalaEnSubida;

public class Jugador extends Nave {
			
		private int cantBombas;
		private BalaEnSubida bala;
		private int cantVidas=3;
		
	public Jugador (SkyNet ia,String nombreNave) {
		if(nombreNave=="moon"){
			this.setIcon(new ImageIcon(getClass().getClassLoader().getResource("images/moon.gif")));
			this.setSize(31,24);
			this.velocidad = 20;
			this.potencia = 15;
		}
		else
			if(nombreNave=="eulo"){
				this.setIcon(new ImageIcon(getClass().getClassLoader().getResource("images/eulo.gif")));
				this.setSize(31,24);
				this.velocidad = 5;
				this.potencia = 20;
			}
		this.vida = 1;
		this.movimiento = new Point(velocidad,0);
		this.lord = ia;	
		this.esEnemigo=false;
		this.esEnemigoFinal=false;
		this.esTiro=false;
		this.bala=new BalaEnSubida(this.lord);
		this.esPowerUp=false;
		this.cantBombas=2;

	}
	
	/**
	 * metodo utilizado para que el jugador dispare, con su tipo particular de bala
	 */
	public void disparar() {
		Bala bes= bala;
		bes.setLocation( this.getLocation().x+8,  this.getLocation().y-25 );
		this.lord.agregarObjeto(bes);
	}
	
	/**
	 * metodo usado para disparar la bomba que elimina a todos los enemigos que hay en pantalla
	 */
	public void disparoBomba(){
		if(cantBombas>0){
			lord.setSeDisparoBomba();
			lord.getJuego().setPuntaje(-50);
			lord.getJuego().restarBomba(cantBombas);
			cantBombas--;
		}
	}
	
	/**
	 * metodo usado para subir el nivel del arma, si es que este no supera el nivel 2
	 */
	public void subirNivelArma(){
		bala.mejorarArma();
	}
	
	@Override
	public void reLocation() {
		// TODO Auto-generated method stub
	}
	
	/**
	 * Metodo que controla el choque entre el jugador y una bala o nave enemiga. Si choca con un power up, sube el nivel del arma o aumenta la cantidad de bombas si es posible
	 */
	public void golpearObjeto(Bala b) {
		if(b.getEsPowerUp() && b.getVida()<=-1000){
				if(bala.getNivelArma()<3)
					this.subirNivelArma();
				else
					if(cantBombas<3){
						lord.getJuego().sumarBomba(cantBombas);
						cantBombas++;
					}
				this.lord.getJuego().setPuntaje(b.getPuntaje());
		}
		if(b.getVida()>-500){
			lord.getJuego().restarVida(cantVidas);
			cantVidas--;
			if(cantVidas>0)
				lord.getJuego().setPuntaje(-100);
			else 
				lord.getJuego().gameOver(false);
		}
		if(!b.getEsEnemigoFinal())
			this.lord.eliminarObjeto(b);
		else{
			if(cantVidas>0)
				this.setLocation(300,500);
			else{
				this.lord.eliminarObjeto(b);
				this.lord.eliminarObjeto(this);
			}
			
				
		}
	}
	
	public int getCantVidas(){
		return this.cantVidas;
	}
}
